package com.kamistoat.meimeistore.gateway.config;

import com.kamistoat.meimeistore.gateway.handler.SentinelFallbackHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;

/**
 * 就是将 SentinelFallbackHandler这个类注册到Spring容器中
 */
@Configuration
public class GatewayConfig {
    /**
     * 注意，注册 SentinelFallbackHandler 时为其赋予了最高优先级。
     * 因此 SentinelFallbackHandler 将成为网关系统中最先被执行的Bean，也很好理解，因为如果网关被sentinel断熔，那么其余任何异常处理都是没有意义的，直接返回sentinel断熔异常即可。
     */
    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public SentinelFallbackHandler sentinelFallbackHandler() {
        return new SentinelFallbackHandler();
    }
}
